// 题目链接：https://www.luogu.com.cn/problem/P1149

#include <iostream>

using namespace std;

int n;
int res = 0;                                     // 存等式的数目
int nums[1010] = {6, 2, 5, 5, 4, 5, 6, 3, 7, 6}; // 存每个数需要的火柴数
int q[4];                                        // 存A，B，C三个运算数

void DFS(int x, int sum)
{
    // 剪枝，如果当前用到的火柴数超过可使用的火柴数，直接返回
    if (sum > n)
    {
        return;
    }

    // A，B，C拼凑完成
    if (x > 3)
    {
        if (q[1] + q[2] == q[3] && sum == n)
        { // 如果满足等式并且火柴刚好用完，则等式的数量加1
            ++res;
        }
        return;
    }

    // 只需暴力搜索0~1000的数即可
    for (int i = 0; i <= 1000; ++i)
    {
        q[x] = i;
        DFS(x + 1, sum + nums[i]);

        // 恢复现场
        q[x] = 0;
    }
}

int main()
{
    scanf("%d", &n);
    n -= 4;

    // 初始化存每个数需要的火柴数
    for (int i = 10; i <= 1000; ++i)
    {
        nums[i] = nums[i % 10] + nums[i / 10];
    }

    DFS(1, 0);
    printf("%d\n", res);

    return 0;
}